package com.ruoyi.repayment.controller;

public class Test1 {

        private static final String[] ROMAN_NUMERALS = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        private static final int[] ARABIC_NUMERALS = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

        public static String convert(int num) {
            StringBuilder roman = new StringBuilder();
            for (int i = 0; i < ARABIC_NUMERALS.length; i++) {
                while (num >= ARABIC_NUMERALS[i]) {
                    roman.append(ROMAN_NUMERALS[i]);
                    num -= ARABIC_NUMERALS[i];
                }
            }

            return roman.toString();
        }

        /**
         * 该代码使用了两个静态数组，ROMAN_NUMERALS 和 ARABIC_NUMERALS
         * 分别存储了罗马数字和阿拉伯数字的对应关系。在 convert 方法中
         * 我们使用一个循环遍历 ARABIC_NUMERALS 数组
         * 每次取出一个阿拉伯数字，如果 num 大于等于该数字
         * 就将对应的罗马数字加到 roman 中，并将 num 减去该数字
         * 直到 num 变成0为止。最后将 roman 转换成字符串并返回即可
         * 在 main 方法中，我们测试了一些不同的阿拉伯数字转换成罗马数字的结果
         * 你可以根据自己的需要修改这些测试用例来测试你的代码
         */
        public static void main(String[] args) {
            // I
            System.out.println(convert(1));
            // IV
            System.out.println(convert(4));
            // IX
            System.out.println(convert(9));
            // XLIX
            System.out.println(convert(49));
            // CCXLVI
            System.out.println(convert(246));
            // DCCLXXXIX
            System.out.println(convert(789));
            // CMXCIX
            System.out.println(convert(999));
            // MMMCMXCIX
            System.out.println(convert(3999));
        }

}
